// ID Card Generator Tool
class IDCardGenerator {
    constructor() {
        this.provinces = {
            '11': '北京市',
            '12': '天津市',
            '13': '河北省',
            '14': '山西省',
            '15': '内蒙古自治区',
            '21': '辽宁省',
            '22': '吉林省',
            '23': '黑龙江省',
            '31': '上海市',
            '32': '江苏省',
            '33': '浙江省',
            '34': '安徽省',
            '35': '福建省',
            '36': '江西省',
            '37': '山东省',
            '41': '河南省',
            '42': '湖北省',
            '43': '湖南省',
            '44': '广东省',
            '45': '广西壮族自治区',
            '46': '海南省',
            '50': '重庆市',
            '51': '四川省',
            '52': '贵州省',
            '53': '云南省',
            '54': '西藏自治区',
            '61': '陕西省',
            '62': '甘肃省',
            '63': '青海省',
            '64': '宁夏回族自治区',
            '65': '新疆维吾尔自治区'
        };
        
        this.cities = {};
        this.initializeCities();
    }

    initializeCities() {
        // 简化版示例城市数据，实际使用时可扩充
        this.cities = {
            '11': {'01': '东城区', '02': '西城区', '03': '朝阳区', '04': '丰台区'},
            '31': {'01': '黄浦区', '02': '徐汇区', '03': '长宁区', '04': '静安区'},
            '44': {'01': '广州市', '02': '韶关市', '03': '深圳市', '04': '珠海市'}
            // ... 可以添加更多城市数据
        };
    }

    generateRandomNum(min, max) {
        return Math.floor(Math.random() * (max - min + 1)) + min;
    }

    calculateChecksum(idNumber) {
        const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
        const checksumChars = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
        
        let sum = 0;
        for (let i = 0; i < 17; i++) {
            sum += parseInt(idNumber[i]) * weights[i];
        }
        
        return checksumChars[sum % 11];
    }

    generateIDCard(provinceCode, cityCode, birthDate) {
        // 区县码随机生成
        const districtCode = this.generateRandomNum(1, 99).toString().padStart(2, '0');
        
        // 生成出生日期字符串
        const birthDateStr = birthDate.replace(/-/g, '');
        
        // 生成顺序码
        const sequenceCode = this.generateRandomNum(1, 999).toString().padStart(3, '0');
        
        // 组合前17位
        const baseNum = `${provinceCode}${cityCode}${districtCode}${birthDateStr}${sequenceCode}`;
        
        // 计算校验码
        const checksum = this.calculateChecksum(baseNum);
        
        return baseNum + checksum;
    }

    generateMultiple(provinceCode, cityCode, birthDate, count) {
        const results = [];
        for (let i = 0; i < count; i++) {
            results.push(this.generateIDCard(provinceCode, cityCode, birthDate));
        }
        return results;
    }
}

// 导出给全局使用
window.markAnything = window.markAnything || {};
window.markAnything.idCardGenerator = new IDCardGenerator(); 